package com.qf.service;

import com.qf.vo.LayUITableVO;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;

import java.io.IOException;
import java.util.List;
import java.util.Map;

public interface SearchService {

    /**
     * term查询
      * @param index    索引名
     * @param type      类型名
     * @param field     属性名
     * @param value     属性值
     * @return
     */
    List<Map> termQuery(String index,String type,String field,String value) throws IOException;


    /**
     * terms查询
     * @param index    索引名
     * @param type      类型名
     * @param field     属性名
     * @param values     属性值
     * @return
     */
    List<Map> termsQuery(String index,String type,String field,String... values) throws IOException;

    /**
     * 查询全部并分页
     * @param index    索引名
     * @param type      类型名
     * @param page     当前页
     * @param size     每页显示条数
     * @return
     */
    LayUITableVO<Map> matchAllQuery(String index, String type, int page, int size) throws IOException;



    /**
     * match查询： 如果查询keyword，match不会对value分词，如果查询text，match会对value分词
     * @param index    索引名
     * @param type      类型名
     * @param field     属性名
     * @param value     属性值
     * @return
     */
    List<Map> matchQuery(String index,String type,String field,String value) throws IOException;


    /**
     * 符合查询
     * @param index     索引名
     * @param type      类型名
     * @param page      当前页
     * @param size      每页显示条数
     * @return
     */
    LayUITableVO<Map> boolQuery(String index,String type,int page,int size) throws IOException;


    /**
     * boosting查询
     * @param index
     * @param type
     * @return
     */
    List<Map> boostingQuery(String index,String type) throws IOException;

    /**
     * 高亮展示数据
     * @param index
     * @param type
     * @return
     * @throws IOException
     */
    List<Map<String, HighlightField>> highLightQuery(String index, String type) throws IOException;
}
